home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-12-19 | 2.6 KB | 139 lines | [TEXT/Imag] |
- {This file contains additional macros that work with stacks.}
-
-
- procedure CheckForStack;
- begin
- if nPics=0 then begin
- PutMessage('This macro requires a stack.');
- exit;
- end;
- if nSlices=0 then begin
- PutMessage('This window is not a stack.');
- exit;
- end;
- end;
-
-
- macro 'Add Slice [A]'; begin CheckForStack; AddSlice end;
- macro 'Delete Slice [D]'; begin CheckForStack; DeleteSlice end;
- macro 'First Slice [F]'; begin CheckForStack; SelectSlice(1) end;
- macro 'Last Slice [L]'; begin CheckForStack; SelectSlice(nSlices) end;
-
- macro '(-' begin end;
-
-
- macro 'Smooth';
- var
- i:integer;
- begin
- CheckForStack;
- for i:= 1 to nSlices do begin
- SelectSlice(i);
- SetOption; Smooth;
- end;
- end;
-
- macro 'Invert';
- var
- i:integer;
- begin
- CheckForStack;
- for i:= 1 to nSlices do begin
- SelectSlice(i);
- Invert;
- end;
- end;
-
- macro 'Make Surface Plot Movie…';
- var
- i,OldStack,NewStack:integer;
- N,PlotWidth,PlotHeight:integer;
- ScaleFactor:real;
- OneToOne:boolean;
- begin
- RequiresVersion(1.50);
- CheckForStack;
- SaveState;
- OldStack:=PicNumber;
- N:=nSlices;
- PlotWidth:=GetNumber('Surface Plot Width:',300);
- PlotHeight:=GetNumber('Surface Plot Height:',PlotWidth);
- SetNewSize(PlotWidth,PlotHeight);
- MakeNewStack('Stack');
- NewStack:=PicNumber;
- SelectPic(OldStack);
- for i:= 1 to N do begin
- SelectSlice(1);
- SurfacePlot;
- SelectAll;
- Copy;
- Dispose;
- SelectPic(NewStack);
- if i<>1 then AddSlice;
- Paste;
- SelectPic(OldStack);
- DeleteSlice;
- end;
- Dispose; {OldStack}
- RestoreState;
- end;
-
- macro 'Make Expression Movie… [E]';
- {
- Requires the Expression 3.0b filter plug-in, which
- is available by anonymous FTP from zippy.nimh.nih.gov,
- in the /pub/nih-image/plug-ins directory.
- }
- var
- width,height,nframes,i:integer;
- begin
- RequiresVersion(1.56);
- width:=GetNumber('Width:',200);
- height:=GetNumber('Height:',width);
- nframes:=GetNumber('Number of Frames:',50);
- SetNewSize(width,height);
- MakeNewStack('Stack');
- MakeNewWindow('Temp');
- CallFilter('Reset');
- for i:=1 to nframes do begin
- SelectWindow('Temp');
- CallFilter('Expression 3.0');
- SelectAll;
- Copy;
- SelectWindow('Stack');
- if i<>1 then AddSlice;
- paste;
- end;
- SelectWindow('Temp');
- Dispose;
- end;
-
- macro 'Animate Stack';
- var
- i,delay:integer;
- begin
- RequiresVersion(1.56);
- CheckForStack;
- i:=0;
- delay:=0.1;
- repeat
- i:=i+1;
- if i>nSlices then i:=1;
- Wait(delay);
- SelectSlice(i);
- if KeyDown('shift') then delay:=1.5*delay;
- if delay>1 then delay:=1;
- if KeyDown('control') then delay:=0.66*delay;
- if KeyDown('option') then beep;
- ShowMessage('delay=',delay:4:2);
- until button;
- end;
-
-
-
-
-
-
-
-
-